The present invention relates to a method of availability management of an application executed by a computer system. More particularly, the invention relates to a method of discontinuing availability of an application-server connected to at least one application-client by taking the application-server out of service in a polite manner.
Enterprises depend on the availability of the systems that support their day to day operation. A system is called available if it is up and running and is producing correct results. The availability of a system is the fraction of time it is available. With the advent of distributed systems, techniques have been invented which use two or more address spaces on different machines running the same software to improve availability (often called active replication). Further details on these aspects may be found in S. Mullender, xe2x80x9cDistributed Systemsxe2x80x9d, ACM Press, 1993. In using two or more address spaces on the same machine running the same software which gets its request from a shared input queue, the technique of warm backups is generalized by the hot pool technique; refer for instance to F. Leymann and D. Roller, xe2x80x9cBuilding a robust workflow management system with persistent queues and stored proceduresxe2x80x9d, in: Proc. Intl. Conf. on Data Engineering ICDE 98 (Orlando, Fla., Feb. 25-28, 1998).
Despite progress, further improvements are urgently required to support enterprises by increasing the availability of their applications and allowing for electronic business on a 7 (days)*24 (hour) basis; due to the ubiquity of world-wide computer networks, at any point in time, somebody might have interest in accessing a certain application server.
The invention is based on the objective of increasing the availability of an application executed by a computer system due to a dedicated method of discontinuing availability of an application server.
This objective is solved by claim 1. The method of discontinuing availability of an application-server (110) connected to at least one application-client (101) is executed by an computer system. Said connected-application-server offers execution of application-service-requests to said connected-application-client. Said method comprises a connected-application-client-determination-step (206) executed by said connected-application-server which determines said connected-application-client having an open connection (102) to said connected-application-server. Said method comprises a switch-demand-step (208) executed by said application-server sending said connected-application-client a demand to switch to a substitute-application-server. Said method further comprises a connect-to-substitute-application-server-step (209) executed by said connected-application-client opening a substitute-connection to a substitute-application-server. Moreover said method comprises a close-connection-step (210) executed by said connected-application-client closing said connection to said connected-application-server. Finally said method comprises a termination-step (212-218) executed by said connected-application-server discontinuing availability of said connected-application-server by terminating said connected-application-server.
The current invention is of advantage in the area of systems management, especially in the area of availability management. The invention allows to take application servers out of service in a polite manner. Application clients depending on the availability of application services provided by the application server will be informed that the application server is going to discontinue its application services so that the application clients can switch over to another application server as subsitute application server. As a result, users will not realize any downtime of the overall application services because the whole processing is completely transparent to the user. Therefore these users no longer realize a reduced availability of the requested service, i.e. they do not realize the outage. Affected users no longer have to determine substitute application servers themselves for instance by queries against a directory, or calling a help desk or other administrative personnel. Also affected users do not have to open a communication connection to the substitute application servers themselves.
Additional advantages are accomplished by preceding said method by a refuse-new-connection-step (205) executed by said connected-application-server. Said step prevents another application-client to open a new connection to said connected-application-server.
Based on this feature the current teaching allows that new application clients, in the search of a connection to an application server, will not be able to establish such a connection, which soon afterwards would have to be closed again.
Additional advantages are accomplished by preceding said method by an optional substitute-application-server-determination-step (203) executed by said connected-application-server, which uses a specified-substitute-application-server (203) (specified on invocation of said method of discontinuing) as substitute-application-server (120). Moreover in said switch-demand-step an identification (104) of said specified-substitute-application-server is sent to said connected-application-client. Furthermore in said connect-to-substitute-application-server-step said connected-application-client opens a substitute-connection (103) to said specified-substitute-application-server.
Based on this feature the current teaching allows the specification of which application server is to be used as a substitute application server. Therefore, the application server, as well as the connected application clients, are relieved from the need to determine any substitute application server. This results in performance gains. Moreover, this gives the administrator or the program dedicated control on defining the specific substitute application server to be used.
Additional advantages are accomplished if said method is preceded by an optional substitute-application-server-determination-step (203) executed by said connected-application-server, which determines a collection of substitute-application-servers comprising one or more substitute-application-servers. Moreover according the current teaching in said switch-demand-step identifications (104) of said collection of substitute-application-servers are sent to said connected-application-client. Finally in response to said demand in said connect-to-substitute-application-server-step said connected-application-client selects a substitute-application-server (120) from said collection of substitute-application-servers and opens a substitute-connection (104) to said selected substitute-application-server.
Based on this feature of the current teaching the application clients are relieved from determining the substitute application servers themselves. The application server which is going to discontinue its application services is doing that once for all affected application clients increasing overall efficiency.
Additional advantages are accomplished if said substitute-application-server-determination-step determines said collection of substitute-application-servers by retrieving (204) from a first database (202, 130) a collection of currently active application-servers (110, 120, 140). In addition the application server is optionally negotiating with said currently active application-servers whether it may discontinue its availability. Finally, if discontinuing availability is confirmed, the application server selects one or more of said currently active application-servers as said collection of substitute-application-servers.
By maintaining the list of active application servers in database it becomes very performance-effective to determine these active application servers: it is reduced to a database access. From this list a further subset can be determined according any criteria; for instance proximity between the (substitute) application servers and/or application clients, nature of the application services etc. may be of importance.
By negotiating between the application server to be discontinued and the other active application servers various policies can be implemented to decide if the application server really may discontinue its application services. For instance it may depend on the availability of an substitute application server with the same service spectrum, or with a certain performance characteristic etc.
Additional advantages are accomplished by sharing said first database between all currently active application-servers.
In this case the database reflects the global view on the activity status of all application servers. Moreover every application server is able to determine the list of currently active application servers itself.
Additional advantages are accomplished if in said refuse-new-connection-step said connected-application-server is moved into a SHUTDOWN_IN_PROGRESS-state. Moreover it is suggested to store (220) said SHUTDOWN_IN_PROGRESS-state into said first database.
An indication that a certain application server is in the SHUTDOWN_IN_PROGRESS-state may be of importance for other application servers; for instance, an application server in the SHUTDOWN_IN_PROGRESS-state can automatically be excluded as a potential substitute application server.
Additional advantages are accomplished if said switch-demand-step (208) comprises sending a SWITCH_IMMEDIATE demand irreversibly enforcing to switch to said substitute-application-server. As an alternative said switch-demand-step (208) comprises sending a TRY_TO_SWITCH_IMMEDIATE demand discontinuing said connected-application-server only, if said connected-application-client is able to connect to said subsitute -application-server.
Much flexibility is introduced by distinguishing whether an application server is discontinuing its application services unconditionally or only if the application clients were able to connect to a substitute application server. In the later case, application availability is especially increased significantly.
Additional advantages are accomplished if said close-connection-step is preceded by indicating to said connected-application-server to record (211) said connection as closed in a second database.
By recording the open/close status of connections to application clients in a database allows for a performance-effective overview on the connection status of an application server.
Additional advantages are accomplished if said termination-step comprising a determination-sub-step (212, 216, 217), which determines if all connections to said connected-application-server have been closed. Furthermore said termination-step comprises a shutting-down-substep (213), which terminates said connected-application-server only, if all connections to said connected-application-server have been closed.
Such a behavior of the current methodology maximizes availability of an application to application clients. Applications clients are services until they have been able to connect to a substitute application server. Moreover, users will not even realize that the application client has connected to a substitute application server.
Additional advantages are accomplished if said determination-sub-step is determinating, if all connections to said connected-application-server have been closed, by periodically checking the number of open connections by inspecting (221) said second database.
A simple database access for determining the connection status of all application clients delivers this information in a very efficient manner. Moreover, a common interface for this information is established for other components.
Additional advantages are accomplished if said determination-sub-step (216) is closing all open connections, if a first time interval has been exceeded and not all open connections have been closed and if a SWITCH_IMMEDIATE demand has been sent during said switch-demand-step.
Based on this approach even in the case that the application server is to be discontinued unconditionally but not all connections could be closed the current teaching increases availability by forcing the discontinuation not before a certain time interval has elapsed.
Additional advantages are accomplished if said determination-sub-step (217, 218) is abandoning said method of discontinuing and putting said connected-application-server in normal operation again, if a second time interval has been exceeded and said connected-application-client has not been able to connect to said substitute-application-server, and if said TRY_TO_SWITCH_IMMEDIATE demand has been sent to said connected-application-client.
This variant of the proposed methodology offers the most polite approach and delivers the maximum of availability to application clients. In the extrem case that the application client has not been able to connect to a substitute application server availability of the current application server is preservered by abandoning the current method.
Additional advantages are accomplished if said determination-sub-step, instead of abandoning, is repeating said sending of said TRY_TO_SWITCH_IMMEDIATE demand to said connected-application-client. Said method of discontinuing is abandoned and said connected-application-server is put in normal operation again not before said TRY_TO_SWITCH_IMMEDIATE demand has been repeated M times.
Through this approach the actual abandonment is further postponed allowing for an improved trade-off of the requirement to discontinue the application server on one hand and to make application services available to application clients, which so far have not been able to connect to a substitute application server.
Additional advantages are accomplished if said shutting-down-sub-step is preceded by determining, if still unprocessed applications-service-request are stored in said connected-application-server, and executing said shutting-down-sub-step only, if no unprocessed application-service-requests are stored anymore.
This behavior guarantees that application service requests, once sent to the application server, will be processed even if that application server is going to discontinue its availability. Therefore, the application client suffers no performance degradations by resending already submitted application service requests to a substitute application server.
Additional advantages are accomplished if shutting-down-sub-step is executed after a third time interval has been exceeded ignoring unprocessed application-service-requests.
Through this feature, the application server can finally discontinue its availability if all attempts to cause an application client to connect to a substitute application server failed.
Additional advantages are accomplished if the application servers each comprise a hot pool of one or a multitude of application instances, being executed in the same or a multitude of address-spaces, sharing an input queue. Additionally, said application servers might be executed on the same and/or a cluster of computer systems. Furthermore said application client and said application servers might be executed on the same and/or different computer systems.
By virtue of this teaching the complete spectrum of hardware and software based redundancy approaches are made available for exploitation. The current teaching does not impose any restrictions on an implementation of the current teaching like the number of application instance, the number and location of application servers or number of address-spaces the application instances are executed in.